package com.cmc.cloud.cmclink.doc.service;

import com.cmc.cloud.cmclink.doc.dto.DgProhibitedItemUpdateDto;
import com.cmc.cloud.cmclink.doc.entity.DgProhibitedCountDO;
import com.cmc.cloud.cmclink.doc.entity.DgProhibitedItemDO;
import com.cmc.cloud.cmclink.doc.entity.SpecialCargoDgDO;

import javax.validation.Valid;
import java.util.List;

/**
 * 危险品禁接清单明细 Service 接口
 *
 * @author 集运管理员
 */
public interface DgProhibitedItemService {

    /**
     * 更新危险品禁接清单明细
     *
     * @param mainId 主清单id
     * @param updateReqVO 更新信息
     */
    void updateAllDgProhibitedItem(@Valid List<DgProhibitedItemUpdateDto> updateReqVO, Long mainId);

    /**
     * 删除危险品禁接清单明细
     *
     * @param id 编号
     */
    void deleteDgProhibitedItem(Long id);

    /**
     * 获得危险品禁接清单明细列表
     *
     * @param mainId 清单主信息id
     * @return 危险品禁接清单明细列表
     */
    List<DgProhibitedItemDO> getDgProhibitedItemsByMainId(Long mainId);

    /**
     * 判断危险品禁接清单明细是否存在
     *
     * @param mainId 清单主信息id
     * @return 危险品禁接清单明细是否存在
     */

    boolean existDgProhibitedItemsByMainId(Long mainId);

    /**
     * 获得危险品禁接清单明细列表数量
     *
     * @param mainIds 清单主信息id
     * @return 危险品禁接清单明细列表数量
     */
    List<DgProhibitedCountDO> getCountByMainIdList(List<Long> mainIds);

    /**
     * 判断危险品禁接清单明细是否存在
     *
     * @param id 清单主信息id
     * @param dgDO 危险品信息
     * @return 危险品禁接清单明细是否存在
     */
    boolean existDgProhibitedItemsByMainIdAndDgDto(Long id, SpecialCargoDgDO dgDO);
}
